package dk.kb.yggdrasil.utils; import java.io.BufferedReader; import java.io.File; import java.io.InputStreamReader; import java.net.Socket; import org.hamcrest.CoreMatchers; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import dk.kb.yggdrasil.config.YggdrasilConfig; /** * Tests for the methods in the RunState class. * */ @RunWith(JUnit4.class) public class RunStateTest { /** Logging mechanism. */ private static Logger logger = LoggerFactory.getLogger(RunState.class.getName()); private static File generalConfigFile = new File("config/yggdrasil.yml"); @Test public void testReadRunState() throws Exception { if (TravisUtils.runningOnTravis()) { return; } RunState runnableRunState = new RunState(); Thread runstate = new Thread(runnableRunState); runstate.start(); // Get host name where the service should run. HostName hostname = new HostName(); String hn = hostname.getHostName(); // Set port YggdrasilConfig config = new YggdrasilConfig(generalConfigFile); int MONITOR_PORT = config.getMonitorPort(); logger.info("RunStateTest: " + hn + ":" + MONITOR_PORT); Socket socket = new Socket(hn, MONITOR_PORT); // Read run state form endpoint BufferedReader rd = new BufferedReader(new InputStreamReader(socket.getInputStream())); try { Assert.assertNotNull(rd); String runStateText = rd.readLine(); Assert.assertThat(runStateText, CoreMatchers.containsString("Yggdrasil")); } finally { rd.close(); socket.close(); } } }